package org.openxava.planes.modelo;

import java.util.*;

import javax.persistence.*;

import org.hibernate.annotations.GenericGenerator;
import org.openxava.annotations.*;
import org.openxava.planes.calculadores.*;


@Entity
@Views({
		@View(
				members="Objetivo Específico[objetivo];"+
						"Programa[identificacion;descripcion]"
				),
		@View(
				name="Simple",
				members="identificacion,descripcion"
				)
		}
		)
@Tab(
		properties="objetivo.identificacion,identificacion,descripcion,"
		)
public class Planes_Programa {

	@Id
	@GeneratedValue(generator="system-uuid") @Hidden
	@GenericGenerator(name="system-uuid",strategy="uuid")
	@Column (length=32)
	private String oid;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@DescriptionsList
	@NoFrame
	//@DefaultValueCalculator(value=CurrentMonthCalculator.class)
	private Planes_Objetivo_especifico objetivo;
	
	public Planes_Objetivo_especifico getObjetivo() {
		return objetivo;
	}

	public void setObjetivo(Planes_Objetivo_especifico objetivo) {
		this.objetivo= objetivo;
	}
	
	@Column(length=9)
	@Depends("objetivo")
	@ReadOnly
	@DefaultValueCalculator(value=NextNumberPrograma.class,properties=@PropertyValue(name="identificacion",from="objetivo.identificacion")) //
	private int identificacion;
	
	@Column(length=400) @Required
	@Stereotype("MEMO")	
	private String descripcion;	
	
	
	///////////////OneToMany//////////////////////
	/*@OneToMany(mappedBy="programa",cascade=CascadeType.ALL)
    private Collection<Planes_Meta_producto> metaproducto;

    public Collection <Planes_Meta_producto> getMetaproducto() {
        return metaproducto;
    }

    public void setMetaproducto(Collection <Planes_Meta_producto> metaproducto) {
        this.metaproducto = metaproducto;
    }
	*/
	
	////////////Gets and Sets////////////
	
	public String getOid() {
		return oid;
	}

	public void setOid(String oid) {
		this.oid = oid;
	}
	
	public int getIdentificacion() {
		return identificacion;
	}

	public void setIdentificacion(int identificacion) {
		this.identificacion = identificacion;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
}
